<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" >
        <title>原型</title>
    </head>
    <body>
        <script>
            // 在js中,每定义一个对象时候,对象中都会包含一些预定义的属性,其中每个函数对象都有一个typescript属性,这个属性指向函数的原型对象.    
            // 对象有属性_proto_原型链,指向该对象的构造函数的原型对象.方法除了有属性_proto_还有属性prototype指向改方法的原乡对象
            /*function a(){
                this.name ='bai';
                this.age = 22;
                //console.log(this);//应该指向a
                console.log(this.age);//22
                console.log(this.name);
            } 
            a.prototype.xing = '男';
            let b =  new a;
            b.peage = 21;
                console.log(b.age);//21
                console.log(b.name);
                console.log(b.xing);
           */

            // 工厂模式:在函数内创建一个对象，给对象赋予属性及方法再将对象返回。
                /*function Factory(){
                    // 新建一个对象并给对象赋予属性
                    var child = new Object();
                    child.name='白小白';
                    child.age = 22;
                    child.sex = function(){
                        return '男'
                    };
                    return child;
                };
                var a = new Factory();
                console.log(a.name);
                console.log(a.age)
                console.log(a.sex())*/

            // 构造函数模式 无需再函数内部重建创建对象，而使用this指代
            function Factory(){
                    // 新建一个对象并给对象赋予属性
                    this.name='白小白';
                    this.age = 22;
                    this.sex = function(){
                        return '男'
                    };
                };
                var a = new Factory();
                console.log(a.name);
                console.log(a.age)
                console.log(a.sex())

        </script>
    </body>
</html>